A transição de arrays do estilo C para std::array representa uma mudança fundamental em direção a segurança de tipo e programação genérica na C++ Moderna.
1. O Problema da Decaimento de Ponteiros
Arrays herdados (int arr[N]) sofrem com o "decaimento de ponteiros". Quando passados para funções, perdem suas metadados de tamanho e se convertem em um ponteiro bruto (int*). Isso leva a operações aritméticas de ponteiros inseguras e estouros de buffer.
2. A Modernização do C++11
std::array fornece uma envoltória fina, envoltória sem sobrecarga em torno de arrays brutos. Integra-se com a STL (Biblioteca Padrão de Modelos) respeitando a Regra dos Cinco.
3. Encaminhamento Perfeito com std::forward
O C++11 introduziu std::forward para garantir std::array objetos se movam através de envoltórios de modelo sem cópias redundantes. Ao aproveitar Regras de Colapso de Referências, preservamos a categoria de valor do objeto (lvalue vs rvalue).
$$T\&\& + \& \rightarrow T\&$$